var mongodb = require('mongodb');
var lineReader = require('line-reader');
var rd = require('rd');

var files = rd.readSync('./minutes');

files = files.filter(function(item) {
  return /.csv$/.test(item)
})


var server = new mongodb.Server('localhost', 27017, {
  auto_reconnect: true
});

//连接的数据库为stock
var db = new mongodb.Db('stocks', server, {
  safe: true
});

db.open(function(err, db) {
  if (!err) {
    console.log('数据库连接成功')
    console.time('导入全部数据耗时：')
    var index = 0
    function readAndInsert() {
      var tableName = files[index].match(/(?!\\)[a-zA-Z0-9]+(?=\.csv$)/)[0]

      console.log('开始导入第', index, '个文件,文件名', tableName, '剩余：', files.length - index)

      db.createCollection(files[index].match(/(?!\\)[a-zA-Z0-9]+(?=\.csv$)/)[0], function(err, collection) {
        if (err) {
          console.log(err);
        } else {

          var lines = []
          //逐行读取csv文件
          lineReader.eachLine(files[index], function(line, last) {

            var fields = line.split(',')
            //将csv文件中2015/1/12 格式的时间转化为 20150112
            var date = fields[0].replace(/([0-9]{4})\/([0-9]+)\/([0-9]+)/, function($0, $1, $2, $3) {
              return $1+('0'+$2).slice(-2)+('0'+$3).slice(-2)
            })

            //指定一条记录的格式
            var json = {
              date: +date,
              time: fields[1],
              open: +fields[2],
              high: +fields[3],
              low: +fields[4],
              close: +fields[5],
              volume: +fields[6], // 成交量
              turnover: +fields[7] // 成交额
            };

            lines.push(json)

            if (last) {
              //存入数据库
              collection.insertMany(lines, {
                safe: true
              }, function(err, result) {
                if (err) {
                  console.log('导入出错')
                } else {
                  console.log('导入成功')
                }

                index++
                if (index < files.length) {
                  readAndInsert(index)
                } else {
                  console.log('数据导入完毕')
                  console.timeEnd('导入全部数据耗时：')
                }
              });
              return false
            }
          })
        }
      });
    }

    readAndInsert()
  } else {
    console.log(err);
  }
});
